// ... existing code ...
/**
 * @file widget.h
 * @brief 网络调试助手服务端主窗口头文件
 * @details 定义Widget类，包含TCP服务器功能的核心接口和UI组件声明
 */
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTcpServer>
#include "mycombobox.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

/**
 * @class Widget
 * @brief 主窗口类，负责TCP服务器管理和客户端交互
 * @details 继承自QWidget，实现了TCP服务器的创建、监听、客户端连接管理、数据收发等完整功能
 */
class Widget : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数
     * @param parent 父窗口指针，默认为nullptr
     */
    Widget(QWidget *parent = nullptr);
    /**
     * @brief 析构函数
     * @details 释放UI资源和动态分配的内存
     */
    ~Widget();

    QTcpServer* server; ///< TCP服务器实例指针

public slots:
    /**
     * @brief 处理新客户端连接请求的槽函数
     * @details 当有新客户端连接时被调用，接受连接并初始化通信
     */
    void on_newClient_connect();
    /**
     * @brief 处理客户端数据接收的槽函数
     * @details 当客户端发送数据时被调用，读取并显示数据
     */
    void on_readyRead_handler();
    /**
     * @brief 处理客户端断开连接的槽函数
     * @details 清理断开连接的客户端资源
     */
    void mdisconnected();
    /**
     * @brief 处理客户端连接状态变化的槽函数
     * @param socketState 新的套接字状态
     */
    void mstateChanged(QAbstractSocket::SocketState socketState);
    /**
     * @brief 刷新客户端列表下拉框的槽函数
     * @details 更新下拉框以显示当前所有连接的客户端
     */
    void mComboBox_refresh();

private slots:
    /**
     * @brief 监听按钮点击事件的槽函数
     * @details 启动TCP服务器监听指定端口
     */
    void on_btnListen_clicked();

    /**
     * @brief 发送按钮点击事件的槽函数
     * @details 向选中的客户端或所有客户端发送数据
     */
    void on_btnSend_clicked();

    /**
     * @brief 客户端选择下拉框变化事件的槽函数
     * @param index 选中项的索引
     */
    void on_comboBoxChildren_activated(int index);

    /**
     * @brief 停止监听按钮点击事件的槽函数
     * @details 停止服务器监听并关闭所有客户端连接
     */
    void on_btnStopListen_clicked();

    /**
     * @brief 断开按钮点击事件的槽函数
     * @details 停止服务器并关闭窗口
     */
    void on_btnLineout_clicked();

private:
    Ui::Widget *ui; ///< UI界面指针
    int childIndex; ///< 当前选中的客户端索引
};
#endif // WIDGET_H
